Skip to content

fix(desktop): scroll threads to first unread#2387

Open
Areson wants to merge 2 commits into
block:mainfrom
Areson:Areson/thread-open-scroll-unread
Open

fix(desktop): scroll threads to first unread#2387
Areson wants to merge 2 commits into
block:mainfrom
Areson:Areson/thread-open-scroll-unread

Conversation

@Areson

@Areson Areson commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Why

Opening a long thread from Inbox could intermittently land at the beginning because selection advanced the read marker before the scroll target was resolved, while delayed layout and stale native scroll events could release the intended anchor. Inbox threads should open at the first unread reply, or at the physical bottom once fully read.

What

  • Capture the Inbox read frontier before selection mutates it and resolve a stable first-unread or bottom target
  • Reset anchored-scroll ownership per open, ignore retired-scroller events, and preserve explicit deep-link centering and user-driven release
  • Cover the real Inbox open/reopen lifecycle plus channel-thread divider behavior with focused unit and Playwright regressions

Risk Assessment

Medium — this changes desktop Inbox and channel-thread opening behavior in the shared anchored-scroll path. Read-state persistence and message ordering are unchanged; full CI, independent browser validation, fresh-frame review, and manual macOS Inbox QA all passed.

References

  • just ci — passed across Rust, desktop, web, mobile, production builds, and Tauri checks
  • Desktop JS unit suite — 3,380 passed, 0 failed
  • Inbox smoke — 8 passed; thread-unread smoke — 13 passed
  • Long unread boundary, all-read A → B → A reopen, late layout growth, deep-link center, pointer release, and divider cases — passed
  • Independent fresh-frame review — GO; manual macOS Inbox QA — passed

Generated with Codex

Areson and others added 2 commits July 22, 2026 09:29
Co-authored-by: Ian Oberst <ioberst@squareup.com>
Signed-off-by: Ian Oberst <ioberst@squareup.com>
Co-authored-by: Codex <noreply@openai.com>
Ai-assisted: true
Capture the Inbox read frontier before selection advances it, then keep the resulting first-unread or bottom target stable across conversation swaps and delayed layout.

Co-authored-by: Ian Oberst <ioberst@squareup.com>
Signed-off-by: Ian Oberst <ioberst@squareup.com>
Co-authored-by: Codex <noreply@openai.com>
Ai-assisted: true
@Areson
Areson marked this pull request as ready for review July 22, 2026 20:19
@Areson
Areson requested a review from a team as a code owner July 22, 2026 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant